package 力扣.排序.快速排序;

public class 移动零283 {
    /**题意是让我们将数组分成两部分
     * 三路切分的变种：两路切分 ——》又称双指针
     * 本题就是想让我们将数组分为两部分，即非空部分和零两部分。
     * @param nums
     */
    public void moveZeroes(int[] nums) {
        int l = 0, i = 0;//双指针
        while (i <= nums.length -1){
            if (nums[i] != 0){
                swap(nums,i++,l++);
            }else {
                i++;
            }
        }
    }
    private void swap(int[] nums,int i,int j){
        int t = nums[i];
        nums[i] = nums[j];
        nums[j] = t;
    }
    public void moveZeroes2(int[] nums) {
        int l = 0,i = 0;//双指针
        for (int te : nums) {
            if (te == 0){
                i++;
            }else {
                swap(nums, l++, i++);
            }
        }
    }
}
